//柯理化函数
//把接受多个参数的函数，变成一个接受单一参数的函数，并且返回接受余下的参数， 而且返回结果的新函数的技术。
// 柯里化声称，如果固定某些参数，你将得到接受剩余参数的一个函数

// 总结
// 只传递给函数一部分参数来调用他，让他返回一个函数去处理剩余的参数，这个过程就被称为克里化

function foo(m, n, x, y) {
  return m + n + x + y;
}
foo(10, 20, 30, 40);

//柯里化的过程

function bar(m) {
  return function (n) {
    return function (x) {
      return function (y) {
        m + n + x + y;
      };
    };
  };
}

function add(a, b, c) {
  return a + b + c;
}
var result = add(1, 2, 3);
console.log(`result`, result);

function sum1(a) {
  return function (b) {
    return function (c) {
      return a + b + c;
    };
  };
}
var sum1 = sum1(1)(2)(3);
console.log(`sum1`, sum1);

//简化
var sum2 = (a) => (b) => (c) => a + b + c;
var result2 = sum2(1)(2)(3);

console.log(`result2`, result2);
